/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package factoryTotal;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Timer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.geom.Rectangle;

/**
 *
 * @author wida46984148
 */
public class NaveBoss extends NaveBaseEnemiga{

    boolean enemigo = true;
    Timer timer;
    ElementosJuego a;
    Disparo disparo2 = null;
    Disparo disparo3 = null;
    Disparo laser = null;
    Disparo disparoE1 = null;
    Disparo disparoE2 = null;
    Disparo disparoE3 = null;
    Disparo disparoE4 = null;
    Disparo disparoE5 = null;
    Disparo disparoE6 = null;
    Disparo disparoE7 = null;
    Disparo disparoE8 = null;
    Disparo disparoEL = null;
    NaveBase nbE = null;
    int cnt = 0;
    boolean disparando;

    public NaveBoss(float vida, float vidaT, Disparo disparo, Disparo disparo2, Disparo disparo3, Disparo laser, Image nau, float posX, float posY, Image nauDestroy) {
        super(vida, vidaT, disparo, nau, nauDestroy);
        super.pX = posX;
        super.pY = posY;
        arrayDisparosE = new ArrayList<Disparo>();
        this.disparo2 = disparo2;
        this.disparo3 = disparo3;
        this.laser = laser;
    }

    @Override
    public void posicion(float posX, float posY) {
        super.posicion(posX, posY);
        super.s = new Rectangle(posX, posY, nave.getWidth(), nave.getHeight());
    }

    @Override
    public void render(GameContainer gc, Graphics g) {
        if(!(super.isMort())){
            g.drawImage(nave, pX, pY);
        }else{
            g.drawImage(explosion, pX, pY);
        }
        for (Disparo n : arrayDisparosE) {
            if (n != null) {
                n.render(gc, g);
            }
        }
    }

    @Override
    public void update(int delta) throws SlickException {
        if (!(destruido)) {
            if(pY < -10){
                pY += 2;
            }
            s.setLocation(pX, pY);
            if(pY == -11) disparando = true;
            if (disparando) {
                disparando = false;
                timer = new Timer(600, new ActionListener() {
                    public void actionPerformed(ActionEvent e) {

                        disparoE1 = disparo.copiarDisparo();
                        disparoE1.posicion(pX+50, pY+115);
                        disparoE7 = disparo2.copiarDisparo();
                        disparoE7.posicion(pX+30, pY+115);
                        disparoE2 = disparo.copiarDisparo();
                        disparoE2.posicion(pX+440, pY+115);
                        disparoE3 = disparo2.copiarDisparo();
                        disparoE8 = disparo3.copiarDisparo();
                        disparoE8.posicion(pX+460, pY+115);
                        disparoE3 = disparo2.copiarDisparo();
                        disparoE3.posicion(pX+25, pY+385);
                        disparoE4 = disparo3.copiarDisparo();
                        disparoE4.posicion(pX+65, pY+385);
                        disparoE5 = disparo2.copiarDisparo();
                        disparoE5.posicion(pX+420, pY+385);
                        disparoE6 = disparo3.copiarDisparo();
                        disparoE6.posicion(pX+460, pY+385);
                        disparoEL = laser.copiarDisparo();
                        disparoEL.posicion(pX+242, pY+195);
                        arrayDisparosE.add(disparoE1);
                        arrayDisparosE.add(disparoE2);
                        arrayDisparosE.add(disparoE3);
                        arrayDisparosE.add(disparoE4);
                        arrayDisparosE.add(disparoE5);
                        arrayDisparosE.add(disparoE6);
                        arrayDisparosE.add(disparoE7);
                        arrayDisparosE.add(disparoE8);
                        if(cnt == 5) {
                            arrayDisparosE.add(disparoEL);
                            cnt = 0;
                        }
                        cnt++;
                        if (600 <= getPosY()) {
                            timer.stop();
                            destruido = true;
                        }
                    }
                });
            }
            timer.start();
        } else {
            pX = 1000;
            pY = 1000;
        }
        updateDisparos(delta);
    }

    @Override
    public void updateDisparos(int delta) {
        timer.start();
        for (Disparo n : arrayDisparosE) {
            if (n != null) {
                n.update(delta);
            }
        }
    }
}


